package com.llbnk.error;

/**
 * @author shkstart
 * @create 2022-08-20 9:49
 */
// 包装器 业务异常类 实现
//外部不仅可以通过BusinessException，EmBusinessError都可以实现errorcode和errormsg的组装定
// 而且实现了一个seterrmsg方法可以将原来的errmsg给覆盖掉
//使用上就可以 if() new BusinessException();这样就能抛出我们自己定义的errorcode和errormsg
public class BusinessException extends Exception implements CommonError{

    private CommonError commonError;

    // 直接接受 EmBusinessError的传参, 构造业务异常
    //本质上这个地方传入参数还是CommonErr的实现类EmBusinessError这个类
    public BusinessException(CommonError commonError) {
        //调用 父类 Exception自身初始化机制
        super();
        this.commonError = commonError;
    }



    // 接收 自定义errMsg的方式, 构造业务异常
    public BusinessException(CommonError commonError, String errMsg) {
        super();
        this.commonError = commonError;
        // 二次改写 errMsg
        this.commonError.setErrMsg(errMsg);
    }

    @Override
    public int getErrCode() {
        return this.commonError.getErrCode();
    }

    @Override
    public String getErrMsg() {
        return this.commonError.getErrMsg();
    }

    @Override
    public CommonError setErrMsg(String errMsg) {
        this.commonError.setErrMsg(errMsg);
        return this;
    }
}
